This tool lets you switch the MIDI stack Windows uses without editing the registry by hand. This guide covers how to use it and — most importantly — how to confirm the switch actually took effect.
Windows 11 ships with a new MIDI stack called Windows MIDI Services. For compatibility, Microsoft included a
switch that lets users fall back to the legacy MIDI implementation. That switch is a single value in the registry,
and Microsoft's official guide asks users to add it by hand using regedit.exe.
This tool does exactly the same thing, but removes the opportunities for mistakes — it writes to the correct key, uses the correct data type, only accepts valid values, and reminds you to restart when it's done.
Most machines should stay on the default Mode 0. You only need to switch to Mode 1 if your device belongs to one of the known problem categories: inMusic hardware (AKAI, Rane, etc.), or older Hercules DJ controllers (which use the deprecated DirectMusic driver).
If your MIDI devices are working fine, switching to Mode 1 will only cost you features — you gain nothing.
The Windows default. Supports multi-client access (the same MIDI port can be opened by multiple applications at the same time), MIDI loopback virtual ports, Network MIDI 2.0, and native mode for MIDI 2.0 devices.
When to use it: Almost always. Unless you have a specific reason to change it, stay on this mode.
Reverts to the pre-Windows MIDI Services stack, with the same limitations as before. You lose multi-client access, loopback ports, and native mode for MIDI 2.0 devices.
When to use it: Only when inMusic hardware (AKAI, Rane) or older Hercules DJ controllers are misbehaving.
The new and old drivers cannot see each other's devices, so which ports show up depends on which application you use and which driver each device is on. The result is unpredictable and hard to debug.
When to use it: For diagnostics only. Don't leave a machine on this mode long-term.
Just double-click it. Launching does not trigger a User Account Control (UAC) prompt, so you can safely check the current status without any elevated permissions.
The box at the top shows the current mode, the registry value, the MIDI service status, and whether the new MIDI stack is installed. Look at it before you switch, so you know what changed afterwards.
Click Mode 0, Mode 1, or Mode 2. The colored block below updates in real time with notes about that mode — green means recommended, orange means it has caveats, red means diagnostics only.
A confirmation dialog appears first; only after you confirm will the UAC prompt ask for administrator rights. This is the only step in the whole flow that requires elevation. If you click "No" on the UAC prompt, the tool returns quietly without making any change.
Once the write succeeds, a small dialog will pop up to remind you that the change is not yet in effect and that a restart is required.
Clicking "OK" only closes the dialog and does nothing else. This tool does not restart your computer for you, so any unsaved work is safe.
Save your work first, then restart Windows yourself. Without a restart the setting will not take effect — there is no workaround; see the next section.
After you dismiss the reminder, the main window keeps showing "change saved, not yet in effect" in orange until you restart, so you won't forget.
"The setting is written" and "the setting is in effect" are two different things. Clicking "Apply Changes" only accomplishes the first one; the second only happens after a restart.
Almost every "I changed it and nothing happened" report we see comes from confusing these two — someone sees the registry value change and assumes the switch is already live.
Immediately after you apply — no restart needed — the tool's "Registry value" line changes
to UseLegacyMidi = 1.
That means the setting is stored in the system, but MIDI behavior has not changed at all yet. The main window keeps flagging this state in orange.
After restarting, open the tool again and look at the "MIDI service" line. That line is the real answer.
It tells you directly whether the mode is in effect — no interpretation needed on your part.
After you close the reminder dialog with "OK", the main window keeps reminding you that a restart is still pending:
At this point "Current mode" is reading the value that was just written to the registry — it does not mean the system is actually using that mode yet. Real confirmation has to wait until after a restart, using Method 1 below.
After restarting, run MidiApiModeSwitcher.exe again and look at the "Current Status" box at the top:
Before it reads the service status, the tool enumerates the MIDI ports once via the MIDI 1.0 API. This is exactly
the check Microsoft's official documentation recommends — "run a MIDI 1.0 application, then check whether
midisrv is running". So the color of this line has a specific meaning:
| Current mode | "MIDI service" shows | Conclusion |
|---|---|---|
| Mode 0 | Running — new stack in use | Normal. The new MIDI stack is running — this is the default state. |
| Mode 1 or 2 | Stopped — legacy mode confirmed | Switch succeeded. Legacy mode is genuinely active. |
| Mode 1 or 2 | Running — abnormal, mode not in effect | The switch has not taken effect. The setting was written, but the new stack is still running. It is almost always one of the two causes below — see Troubleshooting. |
Under Mode 0, any MIDI application that calls a MIDI API goes through wdmaud2.drv, which starts
the midisrv service. Under Legacy mode, the call goes through the old wdmaud.drv and
never touches that service. So "the service is still stopped after MIDI ports have been enumerated" is direct
evidence that the legacy stack is running.
If you want to verify it yourself, or you're walking a customer through it remotely, open PowerShell and run:
# Currently stored mode (no output = not set = Mode 0)
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32').UseLegacyMidi
# Current state of the MIDI service
Get-Service midisrv | Select-Object Name, Status
The first line tells you what the setting says; the second tells you what is actually running. You have to read them together:
| First-line output | Second-line output | Meaning |
|---|---|---|
(blank) or 0 |
Running or Stopped |
Mode 0. The service starts on demand; either state is normal. |
1 |
Stopped |
Legacy mode is in effect. |
1 |
Running |
The setting is written but not yet in effect — usually a missing restart. |
If you check the service status before opening any MIDI application, even Mode 0 can show
Stopped — the service starts on demand and simply hasn't been triggered yet.
For this check to mean anything, open a MIDI application first (or just run this tool, which enumerates the MIDI ports automatically), then check the service status.
Open regedit.exe and paste this path into the address bar:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32
Look for UseLegacyMidi on the right. This method only confirms what the setting is;
it cannot confirm whether it is in effect. Use it only to rule out "the value never got written".
64-bit Windows also has
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Drivers32,
which looks almost identical but is only used by 32-bit applications. If you jump to it via regedit's "Find"
feature, you may well land on the wrong one. Confirm that the path does not contain
WOW6432Node.
This tool always writes to the correct key, so it never runs into this problem.
After switching to Mode 1, you should observe the following changes. If none of them happened, the mode is not yet in effect:
| Item | Mode 0 | Mode 1 (in effect) |
|---|---|---|
| Same MIDI port opened by multiple applications | Works | Fails — the second application cannot open it |
| MIDI loopback virtual ports | Visible | Gone |
| MIDI 2.0 devices | Run in native 2.0 mode | Drop back to 1.0 mode |
| Port names | New-style names | Revert to legacy names (may be truncated to 32 characters) |
This is the most common situation, and it has exactly two causes:
The setting is only read once, at boot time, when the audio/MIDI subsystem initializes and picks which driver shim to load. Once that decision is made it's locked in — changing the registry afterwards will not swap out the modules that are already loaded. Restart the computer.
Note in particular: clicking "OK" on the reminder dialog does not restart the computer — this tool intentionally does not restart for you; the restart is on you.
Those two tools force-start the midisrv service, which cancels out the Legacy
switch you just made.
While you are in Legacy mode, do not open MIDI Console, do not open MIDI Settings, and do not run
midicheckservice. If you already did, a restart will restore things.
First, confirm you actually switched to Mode 1 and not Mode 2. Under Mode 2 (Hybrid) the new and old drivers can't see each other's devices, so ports come and go depending on the application — this is the expected behavior of that mode, not a bug. Switch back to Mode 0 or Mode 1.
If a device is missing under Mode 1, check whether another application is already holding that port open. Legacy mode has no multi-client support: one port can only be opened by one application at a time.
That's SmartScreen warning you about an unsigned program. Click "More info" → "Run anyway" to continue. If you obtained this tool from an official source, this warning does not mean the file is bad.
Check that you clicked "Yes" on the UAC prompt. If you clicked "No", the tool returns quietly, changes nothing, and does not show an error message — that is intentional, so as not to alarm users. Click "Apply Changes" again to retry.
Pick Mode 0 and apply. The tool removes the UseLegacyMidi value
outright instead of writing it as 0 — both are functionally identical, but removing it returns the
machine to a factory-clean state. A restart is still required.
The "Copy diagnostic info" button at the bottom of the tool copies the full system state to the clipboard. Have the customer click it and paste the result straight into the support ticket — that beats ten rounds of clarifying questions.
=== MIDI API Mode Diagnostics ===
Machine : DESKTOP-XXXXXXX
OS : Windows 11 Home 25H2 (build 26200.8973)
Registry path : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32
UseLegacyMidi : (not set)
Effective mode : 0 (Full Windows MIDI Services)
midisrv : Running
Drivers32 midi : wdmaud.drv
Drivers32 midi1: wdmaud2.drv
MIDI Services : installed, in use
Elevated : no
MIDI inputs (0):
(none)
MIDI outputs (1):
[0] Microsoft GS Wavetable Synth
| Field | What to look at |
|---|---|
UseLegacyMidi |
What the customer configured. (not set) is equivalent to Mode 0. |
midisrv |
What is actually running. Read it together with the row above:
configured as 1 but this shows Running ⇒ not yet in effect.
|
Drivers32 midi1 |
The driver shim currently loaded. Under Mode 0 this is wdmaud2.drv; after switching to
Legacy, Windows rewrites it to wdmaud.drv itself at boot. Both are normal —
this field tells you which stack is currently in use, not what is installed.
|
MIDI Services |
Whether the new stack is installed on this machine.installed, in use = installed and running (Mode 0).installed, standing by = installed but running Legacy right now — this is a normal state.not installed ⇒ Windows MIDI Services is not present on this machine; ask the customer to update Windows first.
|
| MIDI inputs / outputs | Whether the customer's devices are visible to the system. If the customer says "the computer can't see my keyboard" and the device really isn't listed here, the problem is in the driver, USB connection, or hardware — not the API mode. |
When a report comes in, first check whether the customer's device appears in the MIDI inputs / outputs list. If the device isn't listed at all, switching the API mode will not fix the problem — that's a driver, USB connection, or hardware issue and should be investigated as such.
The API mode is only the right lever when the device is visible but multi-open, naming, or MIDI 2.0 behavior is off.